from openai import OpenAI
import json
import os
from common import markdown
from common import format


def get_ai_response(user_message):
    # 初始化客户端
    client = OpenAI(
        api_key="sk-4fd175ed25ba42e68220ea28cfd9671a",
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )

    # 创建完成请求
    completion = client.chat.completions.create(
        model="qwen-plus",  # 模型列表：https://help.aliyun.com/zh/model-studio/getting-started/models
        messages=[
            {'role': 'system', 'content': 'You are a helpful assistant.'},
            {'role': 'user', 'content': user_message}
        ],
    )

    # 将返回的 JSON 结果转换为 Python 字典
    completion_dict = json.loads(completion.model_dump_json())

    # 从响应中提取 content
    content = completion_dict['choices'][0]['message']['content']

    return content


def write_file(path, content):
    """
    将内容写入到指定的文件中。

    :param path: 文件路径
    :param content: 要写入的内容
    """
    try:
        with open(path, 'w', encoding='utf-8') as file:
            file.write(content)
        print(f"内容已成功写入到文件: {path}")
    except Exception as e:
        print(f"写入文件时发生错误: {e}")


def qwer(title, path):
    """
    生成Markdown格式的学习内容，并将其写入指定的文件中。

    :param title: 学习主题
    :param path: 基础路径
    """
    response = get_ai_response(
        "你是一个优秀的{}生成工程师，而且是个很好的{}工程师,在生成markdown格式内容的时候，只输出知识点即可，不要输出能帮助你、希望这份整理、请随时提问之类的话".format(
            title, title))
    print(f"初始响应: {response}")

    file_list, query_content = markdown.entry(title)
    print(f"文件列表: {file_list}")
    print(f"查询内容: {query_content}")

    for i, question in enumerate(query_content):
        formatted_question = f"{title}学习之:{question} 把这个标题的学习整理成markdown格式给我学习"
        print(f"第 {i + 1} 个问题: {formatted_question}")
        response = get_ai_response(formatted_question)
        print(f"第 {i + 1} 个问题的响应: {response}")
        write_file(file_list[i], response)

    print("生成完成")
    format.format_file(path, title)
    print("大功告成")


def qwer2(title, path):
    """
    已有路径+文件 则调用这个方法
    生成Markdown格式的学习内容，并将其写入指定的文件中。

    :param title: 学习主题
    :param path: 基础路径
    """
    response = get_ai_response(
        "你是一个优秀的{}生成工程师，而且是个很好的{}工程师,在生成markdown格式内容的时候，只输出知识点即可，不要输出能帮助你、希望这份整理、请随时提问之类的话".format(
            title, title))
    print(f"初始响应: {response}")

    file_list, query_content = markdown.get_from_already_directory_structure(path)
    print(f"文件列表: {file_list}")
    print(f"查询内容: {query_content}")

    for i, question in enumerate(query_content):
        file_path = file_list[i]
        if os.path.exists(file_path) and os.path.getsize(file_path) > 0:
            print(f"第 {i + 1} 个问题: {question} - 文件已有内容，跳过")
            continue

        formatted_question = f"{title}学习之:{question} 把这个标题的学习整理成markdown格式给我学习"
        print(f"第 {i + 1} 个问题: {formatted_question}")
        response = get_ai_response(formatted_question)
        print(f"第 {i + 1} 个问题的响应: {response}")
        write_file(file_path, response)

    print("生成完成")
    format.format_file(path, title)
    print("大功告成")
